#ifndef GD32F4_TIMER_CONFIG_H
#define GD32F4_TIMER_CONFIG_H
//定时器选择-3选1
#define TIMER_BASIC_SW          1 // 基本定时器开关
#define TIMER_GENERAL_SW        0 // 通用定时器开关
#define TIMER_ADVANCED_SW       0 // 高级定时器开关

//定时器中断(定时功能)设置，通常只有基本定时器开启,需要配置全局优先级分组规则：nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
#define TIMER_INT_SW            1 // 定时器中断开关
#define TIMER_INT_RECALL_SW     1 // 定时器中断回调开关

//--------------------------------------------------------基础设置--------------------------------------------------------
#define TIMER_RCU               RCU_TIMER6                  // 定时器时钟源
#define TIMER_PERIPH            TIMER6                      // 定时器外设
#define TIMER_PERIOD            (SystemCoreClock / 10000)   // 定时器周期，单位为10ms
#define TIMER_PRESCALER         10                          // 分频系数，通过分频，给周期降低到1ms
// 中断相关
#define TIMER_IRQn              TIMER6_IRQn
#define TIMER_Handler           TIMER6_IRQHandler
#define TIMER_INT_FLAG          TIMER_INT_UP        // 中断标志位：向上计数
#define TIMER_INT_IN_FLAG		TIMER_INT_FLAG_UP	// 中断标志位(在中断内部使用的)
#define TIMER_PRE_PRIORITY      2                   // 抢占优先级
#define TIMER_SUB_PRIORITY      2                   // 响应优先级

//--------------------------------------------------------通用/高级_通道设置--------------
#define TIMER_CHANNEL           TIMER_CH_0          // 定时器通道
#define TIMER_POLARITY          1                   // 极性：0无 1正极 2负极 3正负极
#define TIMER_PWM_MODE          TIMER_OC_MODE_PWM0  // PWM模式 0 和 1

//--------------------------------------------------------PWM、蜂鸣器设置-----------------
#define PWM_STEP                10                  // 每次调整的步长
#define PWM_MIN                 0                   // 最小占空比
#define PWM_MAX                 100                 // 最大占空比
#define PWM_FREQ                1000                // PWM频率


// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓定时器GPIO引脚映射信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#if (TIMER_BASIC_SW == 1) // ----------------------------------------基本定时器配置-----------------------------
// 基本定时器（Timer5,Timer6），和引脚无关，只是用来记数
/*定时器5:
指定中断源：TIMER5_DAC_IRQn
中断函数名：TIMER5_DAC_IRQHandler

定时器6：
指定中断源：TIMER6_IRQn
中断函数名：TIMER6_IRQHandler
*/
#elif (TIMER_GENERAL_SW == 1) // ------------------------------------通用定时器配置-----------------------------
// 通用定时器-复用引脚（只写了单通道）
#define TIMER_GPIO_RCU      RCU_GPIOD
#define TIMER_GPIO_PORT     GPIOD
#define TIMER_GPIO_PIN      GPIO_PIN_15
#define TIMER_GPIO_AF       GPIO_AF_2       // PD15复用功能2

#elif (TIMER_ADVANCED_SW == 1) // -----------------------------------高级定时器配置-----------------------------
// 高级定时器-负极
#define TIMER_N_RCU         RCU_GPIOE       // GPIO端口
#define TIMER_N_PORT        GPIOE
#define TIMER_N_PIN         GPIO_PIN_8      // GPIO引脚
#define TIMER_N_AF          GPIO_AF_1       // 复用功能
// 高级定时器-正极
#define TIMER_P_RCU         RCU_GPIOE       // GPIO端口
#define TIMER_P_PORT        GPIOE
#define TIMER_P_PIN         GPIO_PIN_9      // GPIO引脚
#define TIMER_P_AF          GPIO_AF_1       // 复用功能

#endif
// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑定时器GPIO引脚映射信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#endif // GD32F4_TIMER_CONFIG_H
